package com.xiaoshuidi.cloud.module.contract.dal.mysql.bill;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xiaoshuidi.cloud.framework.mybatis.core.mapper.BaseMapperX;
import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.OrderFeesDetaillVo;
import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.OrderInformationVo;
import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.orderFees.OrderFeesDetailReq;
import com.xiaoshuidi.cloud.module.contract.dal.dataobject.bill.OrderFeesDO;
import com.xiaoshuidi.cloud.module.contract.dal.dataobject.bill.OrderFeesDetailDO;
import com.xiaoshuidi.cloud.module.contract.vo.OrderFeeAmountReqVO;
import com.xiaoshuidi.cloud.module.contract.vo.OrderFeeAmountRespVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;

import java.math.BigDecimal;
import java.util.List;

/**
 * 账单明细 Mapper
 *
 * @author 合房租赁
 */
@Mapper
public interface OrderFeesMapper extends BaseMapperX<OrderFeesDO> {


    List<OrderFeesDetaillVo> getOrderDetail(@Param("orderId") Long orderId);

    OrderFeesDetaillVo getIsOrderLateFee(@Param("orderId") Long orderId,@Param("feeId") int feeId);

    int updateOrderLateFeeAmount(@Param("amount") BigDecimal amount, @Param("feeId") Long feeId);
    List<OrderFeesDO> selectByContractId(Long contractId);

    List<OrderFeesDO> selectByOrderIdId(Long contractId);

    void updatePayStatusByOrderId(Long orderId, String payStatus);

    IPage<OrderFeesDetailDO> getOrderFeesDetail(IPage<T> mpPage,@Param("req") OrderFeesDetailReq req);

    List<OrderFeesDetailDO> getOrderFeesDetail( @Param("req")OrderFeesDetailReq req);

    List<OrderInformationVo> getCostInformation(@Param("orderId") Long orderId);
    OrderInformationVo getOrderFeesById(@Param("id") Long id);

    OrderFeeAmountRespVO getOrderAmountByFee(@Param("req") OrderFeeAmountReqVO req);

    List<OrderFeesDO> selectByContractIds(List<Long> contractIds);

    void updateOrderFeeById(@Param("id") Long id);

    void updateOrderFeeAmountById(@Param("id") Long id, @Param("paidAmount") BigDecimal paidAmount);
}
